/* Copyright (c) 2004-2024 Peigen.info. All rights reserved. */

package info.peigen.hotpot.component.schedule.facade.command.order;


import cn.hutool.core.date.DateTime;
import info.peigen.hotpot.common.core.enums.YesOrNo;
import info.peigen.hotpot.component.schedule.facade.enums.ScheduleCommunicationMethod;
import info.peigen.hotpot.component.schedule.facade.enums.ScheduleExecuteResultCode;
import lombok.*;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import lombok.experimental.SuperBuilder;

/**
 * <b>(ScheduleJobEditOrder)</b>
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2023/1/7
 */
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@Data
@AllArgsConstructor
@NoArgsConstructor
@FieldDefaults(level = AccessLevel.PRIVATE)
@Accessors(chain = true)
public class ScheduleJobEditOrder extends AbstractScheduleServiceOrder {
    /** 表主键 */
    Integer                     id;
    /** 任务名 */
    String                      jobName;
    /** cron 表达式 */
    String                      cron;
    /** 是否可用状态 */
    YesOrNo                     enable;
    /** 通讯方式 */
    ScheduleCommunicationMethod communicationMethod;
    /** 如果是Http调用，url配置 */
    String                      url;
    /** 如果是webService调用，endPoint配置 */
    String                      endPoint;
    /** 上次执行时间 */
    DateTime                    preExecuteTime;
    /** 上次执行结果 */
    ScheduleExecuteResultCode   preExecuteResultCode;
    /** 下次执行时间 */
    DateTime                    nextExecuteTime;
    /** 任务执行超时时间，单位秒 */
    int                         executeTimeout;
    /** 失败重试次数 */
    int                         executeFailRetryCount;
    String                      memo;
}